﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace sjt_console20200525
{
    class Program
    {
        static void Main(string[] args)
        {
            // if语句的运用
            //test01();
            // switch语句
            //test02();
            // for循环
            //test03();
            // while循环
            //test04();
            // while循环，改变循环因子在判定条件中
            //test041();
            // do-while循环
            //test05();
            // break的用法
            //test06();
            // continue关键字的使用
            //test07();
            // return语句的使用
            test08();
            // 暂停
            Console.Read();
        }
        /// <summary>
        /// return语句的使用
        /// </summary>
        static void test08()
        {
            // 调用子方法进行业务处理
            Console.WriteLine("主方法调用子方法开始：");
            test08_sub(100);
            Console.WriteLine("\n主方法调用子方法结束。");
        }

        static void test08_sub(int maxRang)
        {
            // 循环因子初始化
            int i = 1;
            //////////////////////////////////////////////////
            while (true) // 死循环
            {
                // 使用break结束循环体
                if (i > maxRang)
                {
                    // 结束整个子方法
                    return; // 从这里开始，这个子方法就全部结束了
                }

                // 循环体

                if (i % 2 == 0)
                {
                    // 偶数，输出即可
                    Console.Write("   {0}", i);
                }
                // 改变循环因子
                i++;
                // 循环体结束
            }
            /////////////////////////////////////////////////////

            // break执行完成之后，继续顺序执行后续代码
            Console.WriteLine("\n子方法执行结束，谢谢调用！");
        }



        /// <summary>
        /// 输出1-100之间的偶数
        /// </summary>
        static void test07()
        {
            // 循环因子初始化
            int i = 1;
            while (i<=100)
            {
                if (i % 2 == 1) // 奇数
                {
                    // 说明是奇数，则直接判断下一个数
                    i++;
                    // 结束本次循环，判断下一个数
                    continue; // 没有结束循环体，而是直接开始了下一次循环；continue关键字之后到while循环体结束部分的内容，被本次循环跳过了
                }
                // 本次循环没有被if条件结束,说明该数是偶数
                // 输出偶数
                Console.Write("   {0}", i);
                // 改变循环因子，继续判断后面的数
                i++;
            }
        }

        /// <summary>
        /// 输出1-100的偶数
        /// </summary>
        static void test06()
        {
            // 循环因子初始化
            int i = 1;
            while (true) // 死循环
            {
                // 使用break结束循环体
                if (i>100)
                {
                    // 结束循环体
                    break;
                }

                // 循环体

                if (i % 2 == 0)
                {
                    // 偶数，输出即可
                    Console.Write("   {0}", i);
                }
                // 改变循环因子
                i++;
                // 循环体结束
            }


        }


        /// <summary>
        /// 计算1-100之间的偶数
        /// </summary>
        static void test05()
        {
            // 初始化循环因子
            int i = 1;

            do // do部分就是循环体部分
            {
                // 循环体

                if (i % 2 == 0)
                {
                    // 偶数，输出即可
                    Console.Write("   {0}", i);
                }

                // 改变循环因子
                i++;
                // 循环体结束
            } while (i <= 100); //注意有分号结尾

        }


        /// <summary>
        /// 输出1-100之间的奇数
        /// </summary>
        static void test041()
        {
            // 循环因子初始化
            int i = 0; // 为什么从0开始？
            while (++i <= 100) // 循环条件判定  使用自增运算改变循环因子，注意边界值的处理
            {
                // 循环体

                if (i % 2 == 1)
                {
                    // 偶数，输出即可
                    Console.Write("   {0}", i);
                }
                // 改变循环因子
                //i++;
                // 循环体结束
            }
        }
        /// <summary>
        /// 输出1-100之间的偶数
        /// </summary>
        static void test04()
        {
            // 循环因子初始化
            int i = 1;
            while (i <= 100) // 循环条件判定
            {
                // 循环体

                if (i % 2 == 0)
                {
                    // 偶数，输出即可
                    Console.Write("   {0}", i);
                }
                // 改变循环因子
                i++;
                // 循环体结束
            }
        }

            /// <summary>
            /// 输出1-100之间的偶数
            /// </summary>
            static void test03()
        {
            for (
                int i=1;// 循环因子初始化
                i<=100;// 循环条件判定，循环条件不满足，则结束循环体
                i++) // 改变循环因子
            {
                // 循环体开始

                if (i%2 ==0)
                {
                    // 偶数，输出即可
                    Console.Write("   {0}",i);
                }

                // 循环体结束
            }
        }

            /// <summary>
            /// switch语句的运用：输入成绩判定成绩的等级
            /// </summary>
            static void test02()
        {
            // 从控制台输入一个成绩，没有做类型异常处理
            Console.WriteLine("请输入你的考试成绩：");
            String score = Console.ReadLine();
            // 转换为double类型
            int dScore = Int32.Parse(score);
            // 将分支缩减为10个，采用10的倍数的方式进行处理
            int DGrade = dScore / 10;

            switch (DGrade)  // 类型只支持 bool、intigeral、string、char、enum类型以及可以为null的对象类型
            {
                /*
                 * 在C#中switch语句要求禁止从一个case部分直接执行到下一个case部分，也就是case语句部分必须使用 break、goto、return等进行终止；
				但是有一种情况例外，就是如果一个case部分没有语句体，则可以和下一个case进行关联执行；反之，如果一个case部分有语句体，则不允许多个case关联执行；
                 */
                case 10:                    
                   //Console.WriteLine("你本次的成绩是{0}，成绩评定等级为：优秀", dScore);
                   // break;
                case 9:
                    Console.WriteLine("你本次的成绩是{0}，成绩评定等级为：优秀", dScore);
                    break;
                case 8:
                    Console.WriteLine("你本次的成绩是{0}，成绩评定等级为：良好", dScore);
                    break;
                case 7:
                    Console.WriteLine("你本次的成绩是{0}，成绩评定等级为：中等", dScore);
                    break;
                case 6:
                    Console.WriteLine("你本次的成绩是{0}，成绩评定等级为：及格", dScore);
                    break;
                default:
                    Console.WriteLine("你本次的成绩是{0}，成绩评定等级为：不及格", dScore);
                    break;
                    
            }

        }

            /// <summary>
            /// if语句的运用：输入成绩判定成绩的等级
            /// </summary>
            static void test01()
        {
            // 从控制台输入一个成绩，没有做类型异常处理
            Console.WriteLine("请输入你的考试成绩：");
            String score = Console.ReadLine();
            // 转换为double类型
            double dScore = Double.Parse(score);

            if (dScore >= 90)
            {
                Console.WriteLine("你本次的成绩是{0}，成绩评定等级为：优秀", dScore);
            }
            else if (dScore >= 80)
            {
                Console.WriteLine("你本次的成绩是{0}，成绩评定等级为：良好", dScore);
            }
            else if (dScore >= 70)
            {
                Console.WriteLine("你本次的成绩是{0}，成绩评定等级为：中等", dScore);
            }
            else if (dScore >= 60)
            {
                Console.WriteLine("你本次的成绩是{0}，成绩评定等级为：及格", dScore);
            }
            else
            {
                Console.WriteLine("你本次的成绩是{0}，成绩评定等级为：不及格", dScore);
            }
            

            //继续执行后续的代码
        }
    }
}
